package co.fitstart.admin.service;

import java.util.List;

import com.demo2do.core.support.Page;

import co.fitstart.entity.courseware.dietary.DietaryProgramTemplate;
import co.fitstart.entity.courseware.dietary.DietaryProgramType;
import co.fitstart.entity.courseware.fitnessgroup.BatchCoursewareTemplate;
import co.fitstart.entity.courseware.fitnessgroup.BatchCoursewareType;
import co.fitstart.entity.courseware.fitnessgroup.CoursewareMovementType;
import co.fitstart.entity.courseware.fitnessgroup.CoursewareTemplate;
import co.fitstart.entity.courseware.fitnessgroup.DailyCoursewareTemplate;
import co.fitstart.entity.courseware.fitnessgroup.FitnessGroup;
import co.fitstart.entity.courseware.fitnessgroup.FitnessGroupType;
import co.fitstart.entity.courseware.fitnessgroup.SpecialCoursewareTemplate;

public interface GroupTemplateService{
    
    /**
     * 
     * @param special
     * @param page
     * @return
     */
    public List<FitnessGroup> listFitnessGroup(FitnessGroupType type, Page page);
    
    /**
     * 
     * @param fitnessGroupId
     * @return
     */
    public FitnessGroup loadFitnessGroup(Long fitnessGroupId);
    
    /**
     * 
     * @param fitnessGroup
     */
    public void createFitnessGroup(FitnessGroup fitnessGroup);
    
    /**
     * 
     * @param name 新模板名称
     * @param fitnessGroup 被复制模板
     */
    public void copyFitnessGroup(String name, FitnessGroup fitnessGroup);
    
    /**
     * 
     * @param fitnessGroup
     */
    public void editFitnessGroup(FitnessGroup fitnessGroup);
    
    /**
     * 
     * @param fitnessGroup
     */
    public void deleteFitnessGroup(FitnessGroup fitnessGroup);
    
    /**
     * 
     * @param dailyCoursewareTemplateId
     * @return
     */
    public DailyCoursewareTemplate loadDailyCoursewareTemplate(Long dailyCoursewareTemplateId);
    
    /**
     * 
     * @param batch
     * @param sorting
     * @return
     */
    public DailyCoursewareTemplate loadDailyCoursewareTemplate(BatchCoursewareTemplate batch, int sorting);
    
    /**
     * 
     * @param dailyCoursewareTemplate
     */
    public void rest(DailyCoursewareTemplate dailyCoursewareTemplate);
    
    /**
     * 
     * @param specialCoursewareTemplate
     */
    public void rest(SpecialCoursewareTemplate specialCoursewareTemplate);
    
    /**
     * 
     * @param batchId
     * @return
     */
    public BatchCoursewareTemplate loadBatchCoursewareTemplate(Long batchId);
    
    /**
     * 
     * @param fitnessGroup
     * @param sorting
     * @param type
     * @return
     */
    public BatchCoursewareTemplate loadBatchCoursewareTemplate(FitnessGroup fitnessGroup, int sorting, BatchCoursewareType type); 
    
    /**
     * 
     * @param batchCoursewareTemplate
     * @param dietaryProgramTemplate
     * @param dietaryProgramType
     */
    public void editDiet(BatchCoursewareTemplate batchCoursewareTemplate, DietaryProgramTemplate dietaryProgramTemplate, DietaryProgramType dietaryProgramType);
    
    /**
     * 
     * @param specialCoursewareTemplate
     * @param dietaryProgramTemplate
     * @param dietaryProgramType
     */
    public void editDiet(SpecialCoursewareTemplate specialCoursewareTemplate, DietaryProgramTemplate dietaryProgramTemplate, DietaryProgramType dietaryProgramType);
    
    /**
     * 
     * @param template
     * @param dietaryProgramTemplateId
     */
    public void createSnack(DietaryProgramTemplate template, Long dietaryProgramTemplateId);
    
    /**
     * 
     * @param coursewareTemplateId
     * @return
     */
    public CoursewareTemplate loadCoursewareTemplate(Long coursewareTemplateId);
    
    /**
     * 
     * @param dailyCoursewareTemplate
     * @param coursewareTemplate
     * @param movementType
     */
    public void createCoursewareTemplate(DailyCoursewareTemplate dailyCoursewareTemplate, CoursewareTemplate coursewareTemplate, CoursewareMovementType movementType);
    
    /**
     * 
     * @param specialCoursewareTemplate
     * @param coursewareTemplate
     */
    public void createCoursewareTemplate(SpecialCoursewareTemplate specialCoursewareTemplate, CoursewareTemplate coursewareTemplate);
    
    /**
     * 
     * @param dailyCoursewareTemplate
     * @param fitnessGroup
     */
    public void createCoursewareGroup(DailyCoursewareTemplate dailyCoursewareTemplate, FitnessGroup fitnessGroup, CoursewareMovementType type);
    
    /**
     * 
     * @param coursewareTemplate
     */
    public void editCoursewareTemplate(CoursewareTemplate coursewareTemplate);
    
    /**
     * 
     * @param coursewareTemplate
     */
    public void deleteCoursewareTemplate(CoursewareTemplate coursewareTemplate);
    
    /**
     * 
     * @param fitnessGroup
     * @return
     */
    public SpecialCoursewareTemplate loadSpecialCoursewareTemplate(FitnessGroup fitnessGroup);
    
    /**
     * 
     * @param specialId
     * @return
     */
    public SpecialCoursewareTemplate loadSpecialCoursewareTemplate(Long specialId);
    
    /**
     * 
     * @param templateId
     * @return
     */
    public DietaryProgramTemplate loadDietaryProgramTemplate(Long templateId);
    
    /**
     * 
     * @param batchCoursewareTemplate
     * @param coachTips
     */
    public void editTips(BatchCoursewareTemplate batchCoursewareTemplate, String coachTips);
    
    /**
     * 
     * @param coursewareTemplate
     */
    public void riseRanking(CoursewareTemplate coursewareTemplate);
    
    /**
     * 
     * @param coursewareTemplate
     */
    public void dropRanking(CoursewareTemplate coursewareTemplate);
}
